package br.imr.bean;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

import br.imr.dao.impl.ConsultarMembroDaoImpl;
import br.imr.model.Membro;
import br.imr.service.CadastrarMembroService;
import br.imr.service.ConsultarMembroService;
import br.imr.support.CarregarCombo;
import br.imr.support.ConsultarEvent;
import br.imr.support.FacesBeanSupport;

@SessionScoped
@ManagedBean(name="membroBean")  
public class MembroBean extends FacesBeanSupport{
	
	private CadastrarMembroService cadastrarMembroService;
	private ConsultarMembroService consultarMembroService;
	
	private Membro membro = new Membro();
	private DataModel<Membro> listarMembros;

	private String nomeMembro;
    
    private CarregarCombo carregarCombo = new CarregarCombo();
	
	private ArrayList<SelectItem> ufSelectItem;
	private String uf;
	
	private ArrayList<SelectItem> estadoCivilSelectItem;
	private String estadoCivil;
	
	private String ministerio;
	private ArrayList<SelectItem> ministerioListSelectItem;
	
	private ConsultarEvent event = new ConsultarEvent();
	
	private Date periodoInicial;
	private Date periodoFinal;
	
    /**
     * Metodo que cadastra novo membro.
     */
    public String salvarNovoMembro(){
    	try {
			cadastrarMembroService.salvarNovoMembro(membro);
			addMessage("Membro salvo com sucesso", "");
			
		} catch (Exception e) {
			addError("Erro ao salvar o cadastro do membro");  
		}
		return "membro";
    }
    
    /**
	 * Metodo responsavel por carregar o combobox estado civil
	 **/
	public void getCarregaComboEstadoCivil() {
		if (estadoCivilSelectItem.size() == 0) {
			estadoCivilSelectItem.addAll(carregarCombo.carregarComboEstadoCivil());
		}
		return;
	}
	
	/**
	 * Metodo responsavel por carregar o combobox UF.
	 **/
	public void getCarregaComboUf(){
		if(ufSelectItem.size() == 0){
			ufSelectItem.addAll(carregarCombo.carregarComboUF());
		}
		return;
	}
	
	/**
	 * Metodo responsavel por carregar o combobox estado civil
	 **/
	public void getCarregaComboMinisterio() {
		if (ministerioListSelectItem.size() == 0) {
			ministerioListSelectItem.addAll(carregarCombo.carregarComboMinisterio());
		}
		return;
	}
	
	
	/**
	 * 
	 * @return
	 */
	public DataModel<Membro> getListarMembros() {
		List<Membro> membroList = new ConsultarMembroDaoImpl().list();
		listarMembros = new ListDataModel<Membro>(membroList);
		return listarMembros;
	}

	public void setListarMembros(DataModel<Membro> listarMembros) {
		this.listarMembros = listarMembros;
	}

	public Membro getMembro() {
		return membro;
	}

	public void setMembro(Membro membro) {
		this.membro = membro;
	}

	public ConsultarEvent getEvent() {
		return event;
	}

	public void setEvent(ConsultarEvent event) {
		this.event = event;
	}

	public String getNomeMembro() {
		return nomeMembro;
	}

	public void setNomeMembro(String nomeMembro) {
		this.nomeMembro = nomeMembro;
	}

	public Date getPeriodoInicial() {
		return periodoInicial;
	}

	public void setPeriodoInicial(Date periodoInicial) {
		this.periodoInicial = periodoInicial;
	}

	public Date getPeriodoFinal() {
		return periodoFinal;
	}

	public void setPeriodoFinal(Date periodoFinal) {
		this.periodoFinal = periodoFinal;
	}
	
	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	public String getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public String getMinisterio() {
		return ministerio;
	}

	public void setMinisterio(String ministerio) {
		this.ministerio = ministerio;
	}

	public CarregarCombo getCarregarCombo() {
		return carregarCombo;
	}

	public void setCarregarCombo(CarregarCombo carregarCombo) {
		this.carregarCombo = carregarCombo;
	}

	public ArrayList<SelectItem> getUfSelectItem() {
		return ufSelectItem;
	}

	public void setUfSelectItem(ArrayList<SelectItem> ufSelectItem) {
		this.ufSelectItem = ufSelectItem;
	}

	public ArrayList<SelectItem> getEstadoCivilSelectItem() {
		return estadoCivilSelectItem;
	}

	public void setEstadoCivilSelectItem(ArrayList<SelectItem> estadoCivilSelectItem) {
		this.estadoCivilSelectItem = estadoCivilSelectItem;
	}

	public ArrayList<SelectItem> getMinisterioListSelectItem() {
		return ministerioListSelectItem;
	}

	public void setMinisterioListSelectItem(
			ArrayList<SelectItem> ministerioListSelectItem) {
		this.ministerioListSelectItem = ministerioListSelectItem;
	}
}
